// http.js
import axios from 'axios';
import {ElMessage} from "element-plus";
import type {ResponseInterface} from "@/type/models";

const URL: string = "http://localhost:8079"
const MOCK_URL: string = "http://127.0.0.1:4523/m1"
const MOCK_SERVICE: any = {
    "verify-code": "/3495316-0-c913e6ee",
    "user": "/3495316-0-1e81872a"
}
const API = axios.create({
    baseURL: URL, // 设置基础URL
    timeout: 30000, // 请求超时时间
    headers: {
        'Content-Type': 'application/json'
    }
});

const MockAPI = axios.create({
    baseURL: MOCK_URL, // 设置基础URL
    timeout: 5000, // 请求超时时间
    headers: {
        'Content-Type': 'application/json'
    }
});

export function getAPI(isMock: boolean) {
    if (isMock) {
        return MockAPI;
    } else {
        return API;
    }
}

/**
 * 根据是否是mock，返回对应服务的api
 * @param isMock 是否是mock
 * @param service 对应服务
 * @param url 请求地址
 */
export function mockServiceURL(isMock: boolean, service: string, url: string) {
    if (isMock) {
        return MOCK_SERVICE[service] + url;
    } else {
        return url
    }
}

// 添加响应拦截器
API.interceptors.response.use(
    response => response,
);
// 添加相应拦截器，对请求成功统一输出
API.interceptors.response.use(
    (response) => {
        // 对于成功的响应，这里可以进行统一处理
        console.log('请求成功:', response.config.url, response.data);
        const data: ResponseInterface = response.data
        if (data['code'] < 0) {
            ElMessage.error(data['msg']);
        }
        // 确保返回的是原响应对象或者你处理过的数据
        return response;
    },
    error => {
        // 对错误进行统一处理
        console.error('An error occurred:', error);
        return Promise.reject(error);
    }
);

